<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>

    <!-- and it's easy to individually load additional languages -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/go.min.js"></script>
    <script>
        // hljs.highlightAll();
    </script>
</head>
<body>
<pre>

</pre>

<script>
    const str = `
以下是使用Java编写的快速排序算法示例：

\`\`\`java
public class QuickSort {
    public static void main(String[] args) {
        int[] arr = {5, 2, 9, 1, 5, 6};
        quickSort(arr, 0, arr.length - 1);
        System.out.println("Sorted array: ");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }

    public static void quickSort(int[] arr, int low, int high) {
        if (low < high) {
            int pi = partition(arr, low, high);
            quickSort(arr, low, pi - 1);
            quickSort(arr, pi + 1, high);
        }
    }

    public static int partition(int[] arr, int low, int high) {
        int pivot = arr[high];
        int i = low - 1;
        for (int j = low; j < high; j++) {
            if (arr[j] < pivot) {
                i++;
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        int temp = arr[i + 1];
        arr[i + 1] = arr[high];
        arr[high] = temp;
        return i + 1;
    }
}
\`\`\`

这个示例中，我们首先定义了一个 \`QuickSort\` 类，包含了 \`main\` 方法作为程序的入口点。在 \`main\` 方法中，我们创建了一个整数数组，并将其传递给 \`quickSort\` 方法进行排序。在 \`quickSort\` 方法中，我们首先判断是否需要继续分割数组，然后调用 \`partition\` 方法找到分区点，并分别对分区点左右两侧的子数组进行递归排序。在 \`partition\` 方法中，我们选择数组的最后一个元素作为基准元素，并将数组分为两个部分，小于基准元素的部分和大于基准元素的部分。最后，我们将基准元素放置到正确的位置，并返回其索引作为分区点。
    `;
    const strings = str.split("\n");
    let flag = false;
    let type;
    const pre = document.querySelector("pre");
    for (let i = 0; i < strings.length; i++) {
        const row = strings[i].trim();
        if (row.includes("```") && row !== "```") {
            type = strings[i].split("```")[1];
            flag = true;
            continue;
        }
        if (row === "```") {
            flag = false;
            continue;
        }
        if (flag) {
            const code = document.createElement("code");
            code.classList.add(type);
            code.innerHTML = hljs.highlightAuto(strings[i]).value + "\n";
            pre.appendChild(code);
            console.log(code)
        } else {
            pre.appendChild(document.createTextNode(strings[i] + "\n"));
        }
    }
    // const highlightedCode = hljs.highlight(
    //     'System.out.println("Hello, World!")',
    //     {language: 'java'}
    // ).value
</script>
</body>
</html>